package com.testing.class16;

import com.testing.inter.InterKeyWord;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * @Classname ReflectionTest
 * @Description 类型说明
 * @Date 2022/11/9 20:43
 * @Created by 特斯汀Roy
 */
public class ReflectionTest {
    public static void main(String[] args) {
        InterKeyWord something =new InterKeyWord();







        System.out.println(something);
        //基于对象来获取它的类型。
        Class aClass = something.getClass();
        System.out.println(aClass.getName());

        Field[] fields = aClass.getFields();
        System.out.println("类中的变量有："+Arrays.toString(fields));
        System.out.println("-------------------------------------------------");
        Method[] methods = aClass.getMethods();
        System.out.println("类中的方法有："+Arrays.toString(methods));

        //要查找的方法名。
        String methodname="testPostUrl";
        String param1="http://www.testingedu.com.cn:8081/inter/HTTP/login";
        String param2="username=Will&password=123456";

        Method method;
        try {
             method= aClass.getMethod(methodname);
            System.out.println("调用无参的testPostJson........");
            //方法找到相应对象来执行。
            method.invoke(something);
            return;
        } catch (Exception e) {
            System.out.println("没有找到无参的postJson方法");
        }
        try {
            method = aClass.getMethod(methodname, String.class);
            method.invoke(something,param1);
            return;
        } catch (Exception e) {
            System.out.println("没有找到只有一个参数的postJson方法");
        }
        try {
            method= aClass.getMethod(methodname, String.class,String.class);
            method.invoke(something,param1,param2);
            return;
        } catch (Exception e) {
            System.out.println("没有找到只有2个参数的postJson方法");
        }
        try {
            method=aClass.getMethod(methodname, String.class,String.class,String.class);
            method.invoke(something,param1,param2,"param3");
        } catch (Exception e) {
            System.out.println("没有找到只有3个参数的postJson方法");
        }

    }
}
